Information processing apparatus, information processing method, and memory medium storing print control program therein

ABSTRACT

In case of temporarily spooling an intermediate language by a printer driver, a high speed print can be performed by suppressing a size and the number of holding data. The printer driver adds a tag of each draw object type to information of a draw command received through a DDI function and holds the resultant information into a primary buffer together with attributes such as draw position information, color information, pattern information, and draw logic information. When the information is held into the primary buffer, if there is a draw object which has already been held, if the types and the draw attributes of the draw objects are identical, the draw object is additionally registered into the primary buffer. If one of “type is different”, “data cannot be fully stored into the primary buffer”, “draw attribute changes”, and “page process is completed” is satisfied, a PDF (Page Data File) is generated from the draw object which has already been held in the primary buffer and spooled.

BACKGROUND OF THE INVENTION

[0001] 1. Field of the Invention

[0002] The invention relates to an information processing apparatus, aninformation processing method, and a memory medium in which a printcontrol program has been stored. More particularly, the inventionrelates to an information processing apparatus which is suitable forcontrolling, for example, a printer through a predeterminedcommunication medium and functions as a host computer and to aninformation processing method and a memory medium in which a printerdriver program which operates on the information processing apparatushas been stored.

[0003] 2. Related Background Art

[0004] First, an information processing method in a conventional printsystem and a flow of processes will be described with reference to FIG.2.

[0005] According to the conventional print system, generally, as shownin FIG. 2, a host computer and a laser beam printer are connectedthrough parallel communication means such as a Centronics interface orthrough network communication means.

[0006] On the host computer side, application software 201 such as wordprocessor or spreadsheet operates on what is called basic software suchas Windows (registered trademark of Microsoft Corporation in U.S.A.). Incase of printing on the basis of such an application, a function of agraphic sub-system 202 among several sub-systems which are provided bythe basic software is used. For example, the graphic sub-system iscalled GDI (Graphic Device Interface) 2021 in Windows and executesprocesses of image information for a display or a printer.

[0007] The GDI 2021 dynamically links a module called a device driver inorder to absorb dependency of each device such as display or printer andexecutes an outputting process to each device. The module for theprinter is called a printer driver 2023.

[0008] For the printer driver 2023, a function group called DDI 2022(Device Driver Interface) which has previously been determined to beinstalled into the device driver needs to be prepared in accordance withits ability, function, or the like. With respect to an API (ApplicationProgramming Interface) call of the application, the GDI 2021 convertsdata into data for the device driver, the DDI function group 2022 isproperly called from the GDI 2021, and a predetermined printing processis executed. The GDI 2021 sequentially processes a print request fromthe application through the printer driver 2023. Generally, a PDLcommand is generated in the printer driver 2023 existing in themechanism of the OS as mentioned above or a rendering process isexecuted as an image mode.

[0009] In order to individually perform a banding process in the imagemode or realize a function which is not supported by the OS, that is, afunction such as page handling process in a reverse order print mode (alast-come first print mode) or the like or automatic switching of aprocessing mode, the printer driver 2023 executes only generation of anintermediate language file (PDF 2031) from a received draw command, anda despooler 2032 of a spool sub-system 203 as an application reads thePDF 2031 and adds additional functions.

[0010] Processes of the printer driver are mainly classified into twokinds of a PDL mode (refer to 2033) and an image mode (refer to 2034 to2036).

[0011] The PDL mode 2033 is used in the case where a printer side has acontroller which can process a control command called PDL (PrinterDescription Language). Immediately after the PDF 2031 is converted intothe command of the PDL, the command is sent to a printing apparatus(printer) 100 through an interface (I/F) 2038.

[0012] As processes in the PDL mode, since commands are merelysequentially generated from the received data by the DDI 2022, it isregarded that they are light processes for the driver. In the PDL modetype, if analyzing ability of the PDL command of the printer is high,data having a high abstract degree received from the GDI 2021 can besent as it is, there is a feature such that a print speed in the normalpage print to mainly print characters is high irrespective of an outputgradation.

[0013] However, if it is intended to output a complicated figure or animage of a high resolution and a high gradation by an application of thegraphics system, a size of PDL command increases and a transfer speed ofdata and a processing speed of the printer deteriorate. Theoretically,there is not an upper limit of the size of PDL command.

[0014] According to the image mode, a print image is developed on a bandmemory space held on the printer driver side, converted into a form inwhich the print image can be directly printed by the printer, and theconverted image data is transmitted to the printer, thereby printing it.

[0015] According to the image mode type, since a size of transfer datais determined by a draw area and the number of output gradations, thereis a feature such that a transfer speed of data and a processing time ofthe printer in case of a simple page and those of a complicated page arenot so different. Therefore, even in case of a page which takes a longprocessing time in the PDL mode, it can be printed at a relatively highspeed. However, even in case of a simple page of only characters, it isdifficult to make the printer operative in accordance with a throughputof an engine.

[0016] When the PDF 2031 is despooled, the despooler 2032 uses a bandmemory divided into a proper height, separately sends draw commandsregarding draw positions to modules 2034 to 2036 for the image mode aplurality of number of times, and executes a drawing process. Generatedbit map data is sent to the printer 100 through the I/F 2038 every band.

[0017] As a feature of the image mode, a point that a drawing processingspeed of a high resolution color image or complicated graphics data ishigh can be mentioned. However, also with respect to characters or asimple figure, since image data in a whole draw area is generated at anoutput resolution and an output gradation and sent as a print command,such an image mode is not suitable for the high speed print of a page ofa high resolution and a high gradation.

[0018] Since the drawing process is performed in both of the image modeand the PDL mode, a memory area for drawing corresponding to one page isnecessary on the host computer side in the image mode and necessary onthe printer side in the PDL mode. In a color printer, however, acapacity of 96 Mbytes is necessary if it is intended to assure a memoryof a capacity corresponding to 600 dpi of 8 bits per each color of RGBand a full page of the A4 size. At present, it is difficult to assuresuch a memory even in a host machine. Therefore, in the drawing processof the color printer, a color space of 1, 2, or 4 bits per each color ofYMCK as an output format is used and a band memory in which a page isfurther divided into several areas is used, thereby reducing thecapacity of the memory for the drawing process.

[0019] The process for dividing one page into a plurality of bands andperforming the drawing process as mentioned above is called a bandingprocess. With respect to the banding process, the draw commands of onepage are held on the printer side in case of the PDL mode and on thehost machine side in case of the image mode and only a print commandnecessary for each band is processed, thereby realizing the drawingprocess of each band.

[0020] However, among the draw commands which are sent through the DDI2022, there is a command such that a 1-line draw function (Windows9X;SCANLINE of an Output function) and a rectangle painting function of afew pixels (Windows9X; RECTANGLE of the Output function) are called manytimes and a figure drawing process of a complicated shape is executed.In such a case, if a spooling process of one page is executed by theprinter driver, a problem such that the number of intermediate languagesand the data size increase and they become factors of reduction of theprocessing speed occurs.

SUMMARY OF THE INVENTION

[0021] In consideration of the above problems, therefore, it is anobject of the invention to provide an information processing apparatusand an information processing method, in which even in case oftemporarily spooling an intermediate language by a printer driver, ahigh speed print can be performed by reducing a size and the number ofholding data.

[0022] To accomplish the above object, according to the invention, thereis provided an information processing apparatus comprising: memory meansfor storing inputted print command information; and synthesizing meansfor, when the print command information is stored in the memory means,if an attribute of print command information which has already beenstored is identical to that of the print command information and thereis a memory area which can be stored in the memory means, synthesizingthe print command information which has already been stored and theprint command information and allowing synthesized information to bestored in the memory means.

[0023] Other features and advantages of the present invention will beapparent from the following description taken in conjunction with theaccompanying drawings, in which like reference characters designate thesame or similar parts throughout the figures thereof.

BRIEF DESCRIPTION OF THE DRAWINGS

[0024]FIG. 1 is a side sectional view showing a structure of a colorlaser beam printer (LBP) to which the invention is applied;

[0025]FIG. 2 is a conceptual diagram showing a conventional drawingmethod;

[0026]FIG. 3 is a block diagram showing a whole fundamental constructionof a print system to which the invention is applied;

[0027]FIG. 4 is a schematic diagram showing a state where a header isadded to each of RECTANGLE draw commands and the resultant draw commandsare stored into a PDF;

[0028]FIG. 5 is a flowchart showing a processing system in which headersof draw commands of the same draw attribute are made common;

[0029]FIG. 6 is a schematic diagram showing a state where one header isadded to a Scanline draw command which was divided into a plurality ofparts and sent and the resultant draw command is stored in a PDFaccording to an embodiment;

[0030]FIG. 7 is a schematic diagram sowing a relation between an Outputfunction (Scanline) as one of Windows9X: DDI and parameters;

[0031]FIG. 8 is a schematic diagram showing a state where a figure isdrawn by Scanline of Windows9X and a difference between a conventionalPDF and the PDF according to the embodiment;

[0032]FIG. 9 is a flowchart showing a procedure for compressing Scanlinedata sent by another function;

[0033]FIG. 10 is a diagram showing a PDF structure of a conventionalScanline draw command;

[0034]FIG. 11 is an explanatory diagram of a command which is used inthe embodiment;

[0035]FIG. 12 is an explanatory diagram of a command which is used inthe embodiment;

[0036]FIG. 13 is an explanatory diagram of a command which is used inthe embodiment; and

[0037]FIG. 14 is an explanatory diagram of a command which is used inthe embodiment.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

[0038] An embodiment of the invention will be described in detailhereinbelow with reference to the drawings.

[0039]FIG. 1 shows a side sectional view of a color laser beam printer(hereinafter, referred to as “color LBP”) included in a print system towhich the invention is applied. That is, FIG. 1 is a side sectional viewshowing a structure of the color LBP which has a resolution of 600dots/inch (dpi) and records an image on the basis of multivalue data inwhich each color component and each pixel are expressed by 8 bits.

[0040] In FIG. 1, reference numeral 100 denotes the color LBP(hereinafter, also referred to as a printer). The printer 100 receivesand stores print information comprising print data (character codes,image data, and the like) and control codes which are supplied from ahost computer or the like connected to the outside, generates acorresponding character pattern, image, or the like in accordance withthe print information, and forms an image onto a recording paper as amemory medium.

[0041] Reference numeral 110 denotes a formatter controller foranalyzing the print information supplied from the host computer,executing a generating process of the print image, and controlling thecolor LBP 100. The formatter controller 110 is connected to an operationpanel 120 on which switches, an LED display, and the like for notifyingthe user of the operation which is executed by the user and notifyingthe user of a status of the printer are arranged. The operation panel isarranged as a part of an external surface component of the printer 100.A final print image generated by the formatter controller 110 is sent asa video signal to an output controller 130. The output controller 130receives detection signals indicative of the statuses from varioussensors (not shown) of the printer 100, outputs control signals to anoptical unit 140 and various driving system mechanism portions, andcontrols a printing process as a printer 100.

[0042] In the printer shown in FIG. 1, a front edge of a paper (transferpaper) P fed from a paper feed cassette 161 is gripped by a gripper 154f and held around an outer periphery of a transfer drum 154. A latentimage of each color formed on a photosensitive drum 151 by the opticalunit 140 is developed by each of color developers Dy, Dm, Dc, and Db ofyellow (Y), magenta (M), cyan (C), and black (Bk) and transferred ontothe paper on the outer periphery of the transfer drum a plurality ofnumber of times, so that a multicolor image is formed. After that, thepaper P is separated from the transfer drum 154, the image on the paperis fixed by a fixing unit 155, and the paper is delivered from a paperdelivery unit 159 to a paper delivery tray 160.

[0043] Each of the developers Dy, Dm, Dc, and Db of each color hasrotary fulcrum axes at both ends and held by a developer selectingmechanism 152 so that it is rotatable around the fulcrum axis as arotational center. Thus, as shown in FIG. 1, each of the developers Dy,Dm, Dc, and Db has a construction such that its position can bemaintained even if the developer selecting mechanism 152 is rotatedaround a rotary axis 152 a as a center in order to select the developer.After the selected developer was moved to a developing position, aselecting mechanism holding frame 153 is stretched in the direction ofthe photosensitive drum 151 around a fulcrum 153 b as a rotationalcenter by a solenoid 153 a and moved in the direction of thephotosensitive drum 151, and a developing process is executed.Subsequently, the photosensitive drum 151 is uniformly charged to apredetermined polarity by a charging device 156. The print informationdeveloped as an image by the formatter controller 110 is converted intoa video signal of the corresponding pattern and drives a semiconductorlaser 141 through a laser driver. A laser beam emitted from thesemiconductor laser 141 is on/off controlled in accordance with theinputted video signal. Further, the laser beam is turned to the rightand left by a polygon mirror 142 which is rotated at a high speed by ascanner motor 143 and scans and exposes the surface of thephotosensitive drum 151 through a polygon lens 144 and a reflectingmirror 145. Thus, an electrostatic latent image of the image pattern isformed on the photosensitive drum 151. Subsequently, an electrostaticlatent image of, for example, the M (magenta) color is developed by thedeveloper Dm of the M (magenta) color and a first toner image of the M(magenta) color is formed on the photosensitive drum 151.

[0044] The transfer paper P is fed at a predetermined timing. A transferbias voltage of a polarity (for example, plus polarity) opposite to thatof toner is applied to the transfer drum 154. The first toner image onthe photosensitive drum 151 is transferred onto the transfer paper P.The transfer paper P is electrostatically adsorbed to the surface of thetransfer drum 154. After that, the toner of the M (magenta) colorremaining on the photosensitive drum 151 is removed by a cleaner 157,thereby preparing for steps of forming and developing a latent image ofthe next color.

[0045] Toner images of the second, third, and fourth colors aresubsequently transferred in the order of C (cyan), Y (yellow), and Bk(black) by a procedure similar to that mentioned above. However, theoperation upon transfer of each color differs from that in the precedingtransfer with respect to a point that a bias voltage higher than that inthe preceding operation is applied to the transfer drum 154. When thefront edge portion of the transfer paper P on which the toner images offour colors have been multiplex-transferred approaches the separatingposition, a separating claw 158 approaches there, a tip of the claw iscome into contact with the surface of the transfer drum 154, therebyseparating the transfer paper P from the transfer drum 154. Theseparated transfer paper P is conveyed to the fixing unit 155, the tonerimage on the transfer paper is fixed here, and the paper is deliveredonto the paper delivery tray 160.

[0046] The color laser beam printer in the embodiment outputs the imageat a resolution of 600 dpi through the image forming steps as mentionedabove. The printer to which the invention can be applied is not limitedto the color LBP, but can be also applied to a color printer of anotherprinting system such as ink jet printer, thermal printer, or the like.

[0047] The formatter controller 110 in the color LBP (printer) 100 willnow be described with reference to FIG. 3. The formatter controller 110is usually also called a PDL controller or the like and includes: aninterface (I/F) 111 as connecting means for connecting to the hostcomputer; a reception buffer 1121 for temporarily holding and managingreception data or the like; a transmission buffer 1122 for temporarilyholding and managing transmission data or the like; a command analyzer113 for analyzing the print data; a print controller 114; a drawer 115;and a page memory 116.

[0048] The interface (I/F) 111 is communicating means for transmittingand receiving the print data to/from a host computer 200 and enablescommunication which conforms with IEEE1284 as a communication protocol.In the embodiment, however, the invention is not limited to suchcommunicating means but the connection can be also made by variousprotocols through a network, or communicating means which conforms withIEEE1394 can be also used. The print data received through the I/F 111is successively stored in the reception buffer 1121 as memory means fortemporarily holding the data and read out and processed as necessary bythe command analyzer 113 or drawer 115.

[0049] The command analyzer 113 is constructed by a control programaccording to each PDL command system or a print job control language.The command analyzer 113 processes an analysis result of the print datasuch as character print, figure, image, or the like regarding thedrawing by inputting an instruction to the drawer 115 and processescommands such as paper select command, reset command, and the like otherthan the draw command by inputting an instruction to the printcontroller 114.

[0050] The drawer 115 is a renderer for successively developing eachdraw object such as character or image into the page memory 116.

[0051] It is necessary to send page data to the color LBP shown in FIG.1 by an area sequential manner of MCYK so as to be in time for an enginerotating process. However, in a standard state, all of the memorycapacity necessary for such an operation is not assured but a memory asa band area of a fraction of one plane (1 or 2 bits/pixel) is assured,the band area is circularly used, and the image is processedsynchronously with an engine speed. Usually, the page memory 116 ismanaged by the chase of the developing process by the YMCK renderer andthe shipping of the video signal to the printer engine, namely, by whatis called a banding control. However, if there is a memory of asufficient capacity, an area where the data of one page can be developedcan be also assured.

[0052] Generally, the formatter controller 110 is constructed by acomputer system using a central processing unit (CPU), a read onlymemory (ROM), a random access memory (RAM), or the like. The processesin the respective sections can be also executed in a time-sharing mannerunder a multitask monitor (real-time OS) or can be also independentlyexecuted by preparing dedicated controller hardware every function.

[0053] The operation panel 120 is used for setting and displayingvarious statuses of the printer as mentioned above. The outputcontroller 130 converts the contents in the page memory 116 into thevideo signal and transfers an image to a printer engine 150. The printerengine 150 is a print mechanism for forming a permanent visible imageonto the recording paper on the basis of the received video signal andhas already been mentioned in conjunction with FIG. 1.

[0054] The LBP printer 100 has been described above. A wholeconstruction of a print system including a host computer 300 will now bedescribed.

[0055] In FIG. 3, reference numeral 300 denotes the host computer foroutputting print information comprising print data and control codes tothe printer 100. The host computer 300 is constructed as one computersystem in which a keyboard 310 as an input device, a mouse 311 as apointing device, and a display monitor 320 as a display device arecombined. It is assumed that the host computer 300 operates by the basicOS such as WindowsNT, Windows95(98), or the like.

[0056] An attention is paid only to functional portions regarding theembodiment with respect to the host computer side and the functions onthe basic OS are mainly classified into: application software(application) 301; graphic sub-system 302; and a spool sub-system 303including print information storing means and communicating means forcommunicating with the printer. The application 301 indicates, forexample, application software which operates on basic software such asword processor, spreadsheet, or the like. The graphic sub-system 302 isconstructed by: a Graphic Device Interface (hereinafter, referred to asGDI) 3021 as a part of the functions of the basic OS; and a printerdriver 3023 as a device driver which is dynamically linked from the GDI.

[0057] The printer driver 3023 is called from the GDI through aninterface such as DDI (Device Driver Interface) 3022 and executesprocesses according to the device every draw object. In the presentsystem, the printer driver adds a tag of each draw object type to theinformation of the draw command received through the DDI function andholds the resultant information into a primary buffer 3024 together withattributes such as draw position information, color information, patterninformation, and draw logic information.

[0058] A draw object (huge image data or the like) which cannot be fullystored into the primary buffer 3024.

[0059] When the draw object is held in the primary buffer 3024, if thereis the draw object which has already been held, it is additionallyregistered into the primary buffer 3024 so long as the types and drawattributes of them are identical, respectively. If one of the conditions“the type differs”, “data cannot be fully stored into the primarybuffer”, “the draw attribute changes”, and “the page process iscompleted” is satisfied, a PDF (Page Data File) 3031 is generated fromthe draw object which has already been stored in the primary buffer 3024and spooled.

[0060] The spool sub-system 303 is a sub-system that is peculiar to theprinter device locating at the post stage of the graphic sub-system 302and includes a despooler 3032. The despooler 3032 reads the PDF 3031 asprint information storing means and executes a despooling process bydesignated translators for mode (3033 to 3036). A selected one ofdrivers (3033 to 3036) performs the image development by using a bandmemory 3037 if the operating mode is an image mode (3034 to 3036) andexecutes a converting process from a spool file into a PDL command ifthe mode is a PDL mode (3033), and the driver sends the data to theprinter through an interface (I/F) 3038.

[0061] Although there is a case where the foregoing names and functionalcombination are slightly different in dependence on the basic OS, thosenames and combination do not cause a large problem so long as they arethe modules which can be realized by each technical means mentioned inthe embodiment. For example, the modules called spooler and spool filecan be also realized by assembling processes into a module called aprint queue in another OS.

[0062] Generally, in the host computer 300 including each of thosefunctional modules, under the hardware such as central processing unit(CPU), read only memory (ROM), random access memory (RAM), hard diskdrive (HDD), various input/output controllers (I/O), and the like,software called basic software controls them and under the basicsoftware, application software and sub-system process of each of themoperate as functional modules.

[0063] A PDL data compressing method using a primary buffer will now bedescribed further in detail.

[0064] To explain the operation in the embodiment, a DDI of Windows95(Windows98) will be first described.

[0065] In the DDI of Windows9X, as one of the functions of the graphicssystem, the following function is prepared.

[0066] Output(LPPDEVICE lpDestDev, WORD wStyle, WORD wCount, LPPOINTlppoints, LPPEN lpPPen, LPPBRUSH lpPBrush, LPDRAWMODE lpDrawMode, LPRECTlpClipRect)

[0067] According to this function, a meaning of data which is sentchanges in dependence on a value of wStyle of the second argument. Forexample, if OS_RECTANGLE has been set, 2 is certainly set into wCount.According to this function, first coordinate information (X, Y) shown bylppoints of the fourth argument indicates an upper left point of arectangle, next coordinate information (X, Y) shows a lower right point,and it is demanded that the inside of a rectangle having a diagonal linedefined by those two points is drawn by a color shown by lpPBrush, apattern, and a frame line shown by lpPPen.

[0068] When a PDF is generated every DDI function by the printer driver3023, a file of a data structure as shown at 1000 in FIG. 10 isgenerated. In the diagram, the file 1000 is constructed by a headerportion 1001 and a data portion 1002. A data type 1003 is provided atthe head of the header portion 1001. In addition to the data type, theheader portion 1001 has brush information 1004, pen information 1005, adata size Count, logic arithmetic operation value 1006, circumscribedrectangle information 1007, and the like. The data portion 1002 isconstructed by a POINT type structure array and the data has been storedin an array corresponding to the number (Count 1006).

[0069] However, if it is intended to draw gradation by the graphicssystem application and output it, there is a case where a large numberof fine RECTANGLEs as shown at 400 in FIG. 4 are designated. That is, Arow-[5 and 6] columns of 400 denotes 401, B row-[4 to 6] columnsindicates 402, C row-[3 to 6] columns shows 403, . . . .

[0070] As mentioned above, if the rectangle draw command is held by afine unit sent to the DDI function, a size of PDF increases and thisresults in reduction of the print speed in both PDL mode and image mode.In the embodiment, therefore, even if the DDI function is called, theprinter driver 3023 does not immediately generate a PDF but executes acompressing process of the PDF by using the primary buffer 3024 as amemory space of a fixed size.

[0071] The primary buffer 3024 needs to be held in the page and has tobe able to be accessed also from all DDI functions provided by thedriver. “LPPDEVICE lpDestDev” has been stored in the first argument inall of the DDIs of Windows9X and indicates a pointer into a memory spaceheld in one job. The pointer into the primary buffer is registered as amember.

[0072] The compressing process in the embodiment is mainly realized by acombination of the following two methods.

[0073] 1) Reduction of the size and the number of commands by making theheader portions common

[0074] 2) Reduction of the data size by compression of the data portion

[0075] Each method will be described in detail hereinbelow.

[0076] First, “1) Reduction of the size and the number of commands bymaking the header portions common” will be explained.

[0077] With respect to the finely divided draw commands of the sameattributes, the size of PDF can be reduced by making the headerinformation common.

[0078] The following members are necessary in order to compare theattributes with the previous draw attributes.

[0079] typedef struct { enum ELEMTYPE lasDataType; //previous data type

[0080] WORD lastPenIndex; //pen information of previous data

[0081] WORD lastBrushIndex; //brush information of previous data

[0082] DRAWMODE lastDrawMode; //DrawMode of previous data

[0083] RECT lastboundRect; //circumscribed rectangle of previous data

[0084] RECT BoundRect; //circumscribed rectangle of whole compressiondata

[0085] LPSTR lpstart; //head pointer of compression data

[0086] LPSTR lplast; //last pointer in present situation of compressiondata

[0087] WORD bufsize; //primary buffer size } LASTDATA;

[0088] In the DDI function which is provided by the printer driver, theprevious data type set in LASTDATA mentioned above is compared with thatof the present data. When both lasDataType coincide, a compressionprocessing function per type is called. If they are different, a PDF isgenerated from the data in the primary buffer.

[0089]FIG. 5 is a flowchart showing a flow for the above processes.Processing contents in the processing steps in FIG. 5 are as follows.

[0090] Step S601:

[0091] If no draw data are stored in the primary buffer, step S605follows. If draw data is set in the primary buffer, a control routineadvances to step S602.

[0092] Step S602:

[0093] If the type and attributes (brush, pen, logic arithmeticoperation value) of the data are identical to those of the draw datastored in the primary buffer, step S603 follows. If they are different,the control routine advances to step S604.

[0094] Step S603:

[0095] If the data sent into the primary buffer can be stored, step S605follows. If it is impossible, the control routine advances to step S604.

[0096] Step S604:

[0097] A PDF is generated from the draw data stored in the primarybuffer, and the control routine advances to step S605.

[0098] Step S605:

[0099] The draw data sent to the current DDI function is transferred toa compression function per data type and set into the primary buffer.After that, the control routine advances to step S606.

[0100] Step S606:

[0101] LASTDATA is updated and the control routine advances to stepS607.

[0102] lastDataType . . . Set if there is a change.

[0103] lastPenIndex . . . Set if there is a change.

[0104] lastBrushIndex . . . Set if there is a change.

[0105] lastDrawMode . . . Set if there is a change.

[0106] lastboundRect . . . Set a circumscribed rectangle of current drawcommand.

[0107] BoundRect . . . Get AND of previous BoundRect and currentcircumscribed rectangle.

[0108] lpstart . . . Head address in the primary buffer. No change.

[0109] lplast . . . Last pointer in which current data in the primarybuffer has been stored.

[0110] bufsize . . . The data size stored at present is added.

[0111] Step S607:

[0112] If all draw commands are completed, step S608 follows. If NO, thecontrol routine advances to step S601.

[0113] Step S608:

[0114] A PDF is generated from the draw data remaining in the primarybuffer.

[0115]FIG. 6 shows an example of the result obtained by the process instep S604 or S608.

[0116] Subsequently, “2) Reduction of the data size by compression ofthe data portion” will be described.

[0117] The compression function per data type which is called when thedraw command of the same type as that of the draw command which hasalready been stored in the primary buffer 3024 is called executes acompressing process of the data portion by using continuity of acoordinate space or the like.

[0118] A specific example of a compressing method of Windows9X, Output(Scanline) will be explained.

[0119] 1. With respect to a compressing algorithm of Output (Scanline)

[0120] An output (Scanline) function will be described with reference toFIG. 7. As shown below, OS_SCANLINES has been set in the second argumentof the Output function (mentioned above) as one of the DDI functions.Arguments LPPDEVICE lpDestDev PDEVICE or PBITMAP WORD wStyleOS_SCANLINES WORD wCount Point number of the IpPoints argument LPPOINTlpPoints Array of the start point and end point of the scanline LPPPENlpPPen Physical pen LPPBRUSH lpPBrush Physical brush LPDRAWMODElpDrawMode Draw context LPRECT lpClipRect Clip rectangle

[0121] A POINT structure array on the destination side shown by lppointsshows

[0122] lpPoints [0]→y:Y coordinate

[0123] lppoints [1]→x:Left coordinate

[0124] lpPoints [1]→y:Right coordinate

[0125] Although wCount indicates the number of lpPoints arrays, when thenumber of scanlines is equal to 1, 2 is set. When it is equal to 2, 3 isset. When it is equal to n, n+1 is set.

[0126]FIG. 8 is a schematic diagram showing a motion in the case wherethe compressing process is not executed when a Scanline drawing isdesignated plural times by the Output function and showing a motion inthe case where the above two methods are combined. In case of drawing aFIG. 802 into a draw area 800, there is a case where Windows9Xsequentially designates the Scanline drawing in the order from the smallY coordinate by using an Output function 801.

[0127] If a PDF 803 having one header for one Output function isgenerated, overlap data such as same brush or pen is registered manytimes.

[0128] Reference numeral 804 in FIG. 8 shows that the header size can bereduced by dealing with the information regarding the same brush, pen,and draw attributes as one header by the first method.

[0129] Further, if the Scanlines are in contact with each other as shownat 802 in FIG. 8, by the following method, the data size can be reducedto a size smaller than that in case of holding all coordinateinformation.

[0130] First, upon compression of the Scanline data, in addition toLASTDATA, the following members are held for management of the primarybuffer.

[0131] typedef Struct {

[0132] WORD repetcnt;//the number of repetition times

[0133] WORD lasty;//previous Y coordinate

[0134] WORD lastLeftX;//previous left X coordinate

[0135] WORD lastRightX;//previous right X coordinate

[0136] WORD delLeftX;//variation of previous left X coordinate

[0137] WORD delRightX;//variation of previous right X coordinate }CMPSCNLINES;

[0138] By storing the information of Scanline so far into CMPSCNLINES,commands shown in FIGS. 11 to 14 are generated.

[0139] A construction of command data will be explained. The commandshows codes (0 to 12) provided for identifying the compressed data byusing the most significant 4-bit portion in the COMPScanline dataportion. A structure of the compressed data differs in dependence on avalue of the code.

[0140]FIG. 11 shows the command code 0 (3-Word construction). The Ycoordinate and the left X coordinate indicate parameters with signs.“with sign” denotes that the most significant bit indicates a code andthe other bits indicate the values. The bits other than the sign bitsindicate the absolute values.

[0141]FIG. 12 shows the command codes 1 and 2 (1-Word construction). Thecommand code 1 is used in the case where the previous coordinate data iscompared with the current coordinate data, the Y coordinate variation isequal to +1, the left side coordinate is the same as the previous value,and the right side coordinate variation lies within a change range whereit can be expressed by 11 bits. (Although the bit length is equal to 12,1 bit is used for the code.)

[0142] Similarly, the command code 2 is used in the case where the Ycoordinate variation is equal to +1, the right side coordinate is thesame as the previous value, and the left side coordinate variation canbe expressed by 11 bits.

[0143]FIG. 13 shows the command codes 3 to 5 (1-Word construction). Thecommand code 3 is used in the case where the previous coordinate data iscompared with the current coordinate data, the Y coordinate variation isequal to +1 and the left and right coordinate variations lie within achange range where they can be expressed by 5 bits. (Although the bitlength is equal to 6, 1 bit is used for the code.)

[0144] The command code 4 is used in the case where the previouscoordinate data is compared with the current coordinate data, the Ycoordinate variation is equal to −1 and the left side coordinate is thesame as the previous value, and the right side coordinate variation lieswithin a change range where it can be expressed by 11 bits. (Althoughthe bit length is equal to 12, 1 bit is used for the code.)

[0145] Similarly, the command code 5 is used in the case where the Ycoordinate variation is equal to +1, the right side coordinate is thesame as the previous value, and the left side coordinate variation canbe expressed by 11 bits.

[0146]FIG. 14 shows the command codes 6 and 15 (1-Word construction).The command code 6 is used in the case where the previous coordinatedata is compared with the current coordinate data, the Y coordinatevariation is equal to −1 and the left and right coordinate variationslie within a change range where they can be expressed by 5 bits.(Although the bit length is equal to 6, 1 bit is used for the code.)

[0147] The command code 15 is used in the case where the command codenumber obtained by comparing the previous and current coordinate data isthe same as the previous number and the continuation number can beexpressed by 12 bits. When it is expressed by 12 or more bits, thecommand 0 is used and the reset of the initial coordinates is performed.

[0148] A command use example will now be described.

[0149] A compression command is fundamentally constructed by acontinuation of “initial coordinates” and “variation command”.

[0150] A command ejection example is shown below.

[0151] 1. Vertical straight line

[0152] In case of a vertical straight line, it becomes “SCANLINE of avariation 0 which continues by a distance corresponding to its length”.

[0153] Therefore, the commands become as follows.

[0154] “(No. 0) (initial coordinates)”

[0155] “(No. 15) (continuation number=length)”

[0156] “(No. 3) (left variation=0) (right variation=0)”

[0157] 2. Oblique 45° line

[0158] In case of an oblique 45° line, in many cases, the right and leftvariations are equal to 1.

[0159] Therefore, since it becomes “SCANLINE of a variation 1 whichcontinues by a distance corresponding to its length”, the commandsbecome as follows.

[0160] “(No. 0) (initial coordinates)”

[0161] “(No. 15) (continuation number=length)”

[0162] “(No. 3) (left variation=1)

[0163] (right variation=1)”

[0164] 3. Oblique line

[0165] In general oblique lines, a change of each SCANLINE is variable.

[0166] Therefore, a command is issued each time the variation changes.The commands become as follows.

[0167] “(No. 0) (initial coordinates)”

[0168] “(No. 3) (left variation) (right variation)”

[0169] “(No. 3) (left variation) (right variation)”

[0170] “(No. 3) (left variation) (right variation)”

[0171]FIG. 9 is a flowchart showing a flow for the above commandgenerating process. Processing contents in the steps in FIG. 9 are asshown below.

[0172] Step S901:

[0173] A variation delY between the Y coordinate LastY of the previousScanline data stored in a primary cache and the Y coordinate of thecurrent Scanline is obtained (delY=0 when the data is not stored in theprimary cache).

[0174] Step S902:

[0175] If delY is equal to a value other than 0, step S905 follows. Ifit is equal to 0, the control routine advances to step S903.

[0176] Step S903:

[0177] A variation between the left X and lastLeftX of the currentScanline and a variation between the right X and lastRightX of thecurrent Scanline are obtained.

[0178] Step S904:

[0179] If the variations on both right and left side are equal toprevious variations delLeftX and delRightx, step S909 follows. If atleast one of them differs, the control routine advances to step S905.

[0180] Step S905:

[0181] If a repetition counter repetcnt indicates 0, step S906 follows.Unless otherwise, the control routine advances to step S907.

[0182] Step S906:

[0183] A continue command (CmndNo. 15) is buffered into the primarybuffer 3024, subsequently, the commands showing delLeftX and delRightXare buffered, and the control routine advances to step S907.

[0184] Step S907:

[0185] By a new coordinate command (CmndNo. 0), the Y coordinate and theright and left X coordinates are buffered into the primary buffer 3024,and the control routine advances to step S908.

[0186] Step S908:

[0187] The left and right X coordinates set in step S907 are set intolastLeftX and lastRight X, and delLeftX and delRightX are initialized to0.

[0188] Step S909:

[0189] The repetition counter repetcnt is counted up and the controlroutine advances to step S910.

[0190] Step S910:

[0191] lastLeftX and lastRightX are updated.

[0192] The invention can be applied to a system comprising a pluralityof apparatuses (for example, a host computer, an interface device, areader, a printer, and the like) or can be also applied to an apparatuscomprising one device (for example, a copying apparatus, a facsimileapparatus, or the like).

[0193] Naturally, the object of the invention can be also accomplishedby a method whereby a memory medium in which software program codescalled a printer driver for realizing the functions of the embodimentmentioned above have been recorded is supplied to a system or anapparatus, and a computer (or a CPU or an MPU) of the system orapparatus reads out and executes the program codes stored in the memorymedium.

[0194] In this case, the program codes themselves read out from thememory medium realize the functions of the embodiment mentioned above.The memory medium in which the program codes have been stored constructsthe invention.

[0195] As a memory medium for supplying the program codes, for example,it is possible to use a floppy disk, a hard disk, an optical disk, amagnetooptic disk, a CD-ROM, a CD-R, a CD-RW, a DVD-ROM, a DVD-RAM, amagnetic tape, a non-volatile memory card, an ROM, or the like.

[0196] The invention incorporates not only a case where a computerexecutes the read-out program codes, so that the functions of theembodiment mentioned above are realized, but also a case where the OS(Operating System) or the like which operates on the computer executes apart or all of the actual processes on the basis of instructions of theprogram codes and the functions of the embodiment mentioned above arerealized by those processes.

[0197] Further, the invention also incorporates a case where the programcodes read out from the memory medium are written into a memory equippedfor a function expanding board inserted in a computer or a functionexpanding unit connected to a computer and, thereafter, a CPU or thelike equipped for the function expanding board or function expandingunit executes a part or all of the actual processes on the basis ofinstructions of the program codes and the functions of the embodimentmentioned above are realized by those processes.

[0198] In case of applying the invention to the memory medium, theprogram codes corresponding to the flowcharts described above are storedin the memory medium.

[0199] Obviously, the invention can be also applied to a case where theprogram codes of software for realizing the functions of the embodimentmentioned above are recorded into a memory medium, and a program isdistributed from the memory medium to a requestor through acommunication line such as personal computer communication or the like.

[0200] The program codes themselves which are installed into a computerin order to realize the functions and processes of the invention by thecomputer also realize the invention. That is, the computer programitself for realizing the functions and processes of the invention isalso incorporated in Claims of the invention.

[0201] As a method of supplying the computer program, the invention isnot limited to a case where it is stored into an FD or a CD-ROM and readout by a computer and installed therein but can be also applied to acase where a client computer is connected to a homepage of the Internetby using a browser of the client computer, the computer program itselfof the invention is downloaded from the homepage, or a compressed fileincluding an automatic installing function, thereby supplying thecomputer program. The supplying method of the computer program can bealso realized by dividing the program codes constructing the program ofthe invention into a plurality of files and downloading each file from adifferent homepage. That is, a WWW server for allowing a program file torealize the functions and processes of the invention by a computer to bedownloaded to a plurality of users is also incorporated in Claims of theinvention.

[0202] The program of the invention is enciphered, stored into a memorymedium such as an FD or the like, and distributed to the users, keyinformation to decrypt the encryption is downloaded to the users whosatisfy predetermined conditions from the homepage through the Internet,and by using the key information, the enciphered program is executed andinstalled into a computer, thereby enabling the program to be realized.

[0203] As many apparently widely different embodiments of the presentinvention can be made without departing from the spirit and scopethereof, it is to be understood that the invention is not limited to thespecific embodiments thereof except as defined in the appended claims.

[0204] As described above, according to the invention, in case oftemporarily spooling the intermediate language by the printer driver,the high speed print can beperformed by suppressing the size and thenumber of holding data. That is, even if the drawing of the same figureis designated by another function by the OS, the high speed printingprocess can be performed by suppressing the number of spool objects andthe spool data size.

What is claimed is:
 1. An information processing apparatus comprising:memory means for storing inputted print command information; andsynthesizing means for, when said print command information is stored insaid memory means, if an attribute of print command information whichhas already been stored is identical to that of said print commandinformation and there is a memory area which can be stored in saidmemory means, synthesizing the print command information which hasalready been stored and said print command information and allowingsynthesized information to be stored in said memory means.
 2. Anapparatus according to claim 1 , wherein when said print commandinformation and the print command information which has already beenstored are not synthesized by said synthesizing means, an intermediatelanguage is generated from the print command information stored in saidmemory means and, thereafter, new print command information is storedinto said memory means.
 3. An apparatus according to claim 1 , whereinsaid print command information is supplied by executing a predeterminedapplication program, intermediate languages corresponding to one pageare held on the basis of said print command information, and thereafter,a print command to a printer is generated.
 4. An apparatus according toclaim 3 , wherein said print command is transmitted to said printerthrough a predetermined communication medium.
 5. An apparatus accordingto claim 1 , wherein said synthesizing means collects the print commandinformation having the same attribute to a common header, therebyreducing an amount of data by an amount corresponding to a header size.6. An apparatus according to claim 1 , wherein said synthesizing meanshas: means for obtaining draw coordinate variations of a draw objectwhich has been held previously and a draw object which is beingprocessed at present; and means for counting up a repetition variable inthe case where said variation is the same as the previous one, and whensaid variation is different from the previous one, a command showing thevariation and a count number indicative of the repetition variable isstored into said memory means, and subsequently, a command indicative ofabsolute coordinates of the draw object which is being processed atpresent is stored into said memory means.
 7. An information processingmethod in an information processing apparatus, comprising: asynthesizing step of, when inputted print command information is storedin a memory of said information processing apparatus, if an attribute ofprint command information which has already been stored is identical tothat of said print command information and there is a memory area whichcan be stored in said memory, synthesizing the print command informationwhich has already been stored and said print command information andallowing synthesized information to be stored in said memory.
 8. Amethod according to claim 7 , wherein when said print commandinformation and the print command information which has already beenstored are not synthesized in said synthesizing step, an intermediatelanguage is generated from the print command information stored in saidmemory and, thereafter, new print command information is stored intosaid memory.
 9. A method according to claim 7 , wherein said printcommand information is supplied by executing a predetermined applicationprogram, intermediate languages corresponding to one page are held onthe basis of said print command information, and thereafter, a printcommand to a printer is generated.
 10. A method according to claim 9 ,wherein said print command is transmitted to said printer through apredetermined communication medium.
 11. A method according to claim 7 ,wherein in said synthesizing step, the print command information havingthe same attribute is collected to a common header, thereby reducing anamount of data by an amount corresponding to a header size.
 12. A methodaccording to claim 7 , wherein said synthesizing step has: a step ofobtaining draw coordinate variations of a draw object which has beenheld previously and a draw object which is being processed at present;and a step of counting up a repetition variable in the case where saidvariation is the same as the previous one, and when said variation isdifferent from the previous one, a command showing the variation and acount number indicative of the repetition variable is stored into saidmemory, and subsequently, a command indicative of absolute coordinatesof the draw object which is being processed at present is stored intosaid memory.
 13. A memory medium in which a program has been stored in aform of the readable program, wherein said program comprises: asynthesizing step of, when inputted print command information is storedin a memory, if an attribute of print command information which hasalready been stored is identical to that of said print commandinformation and there is a memory area which can be stored in saidmemory, synthesizing the print command information which has alreadybeen stored and said print command information and allowing synthesizedinformation to be stored in said memory.
 14. A medium according to claim13 , when said print command information and the print commandinformation which has already been stored are not synthesized in saidsynthesizing step, an intermediate language is generated from the printcommand information stored in said memory and, thereafter, new printcommand information is stored into said memory.
 15. A medium accordingto claim 13 , wherein said print command information is supplied byexecuting a predetermined application program, intermediate languagescorresponding to one page are held on the basis of said print commandinformation, and thereafter, a print command to a printer is generated.16. A medium according to claim 15 , wherein said print command istransmitted to said printer through a predetermined communicationmedium.
 17. A medium according to claim 13 , wherein in saidsynthesizing step, the print command information having the sameattribute is collected to a common header, thereby reducing an amount ofdata by an amount corresponding to a header size.
 18. A medium accordingto claim 13 , wherein said synthesizing step has: a step of obtainingdraw coordinate variations of a draw object which has been heldpreviously and a draw object which is being processed at present; and astep of counting up a repetition variable in the case where saidvariation is the same as the previous one, and when said variation isdifferent from the previous one, a command showing the variation and acount number indicative of the repetition variable is stored into saidmemory, and subsequently, a command indicative of absolute coordinatesof the draw object which is being processed at present is stored intosaid memory.
 19. A print control program for controlling an informationprocessing apparatus, comprising: a synthesizing step of, when inputtedprint command information is stored in a memory, if an attribute ofprint command information which has already been stored is identical tothat of said print command information and there is a memory area whichcan be stored in said memory, synthesizing the print command informationwhich has already been stored and said print command information andallowing synthesized information to be stored in said memory.
 20. Aprogram according to claim 19 , when said print command information andthe print command information which has already been stored are notsynthesized in said synthesizing step, an intermediate language isgenerated from the print command information stored in said memory and,thereafter, new print command information is stored into said memory.21. A program according to claim 19 , wherein said print commandinformation is supplied by executing a predetermined applicationprogram, intermediate languages corresponding to one page are held onthe basis of said print command information, and thereafter, a printcommand to a printer is generated.
 22. A program according to claim 21 ,wherein said print command is transmitted to said printer through apredetermined communication medium.
 23. A program according to claim 19, wherein in said synthesizing step, the print command informationhaving the same attribute is collected to a common header, therebyreducing an amount of data by an amount corresponding to a header size.24. A program according to claim 19 , wherein said synthesizing stephas: a step of obtaining draw coordinate variations of a draw objectwhich has been held previously and a draw object which is beingprocessed at present; and a step of counting up a repetition variable inthe case where said variation is the same as the previous one, and whensaid variation is different from the previous one, a command showing thevariation and a count number indicative of the repetition variable isstored into said memory, and subsequently, a command indicative ofabsolute coordinates of the draw object which is being processed atpresent is stored into said memory.